import request from '@/config/axios'
import type { Dayjs } from 'dayjs'

/** 回收订单明细信息 */
export interface OrderItem {
  userId?: number // 用户编号
  orderId?: number // 订单编号
  cartId: number // 购物车项编号
  spuId?: number // 商品 SPU 编号
  spuName?: string // 商品 SPU 名称
  properties: string // 商品属性数组，JSON 格式
  picUrl: string // 商品图片
  count?: number // 购买数量
  commentStatus?: boolean // 是否评价
  price?: number // 商品原价（单），单位：分
  discountPrice?: number // 商品级优惠（总），单位：分
  deliveryPrice?: number // 运费金额，单位：分
  adjustPrice?: number // 订单调价（总），单位：分
  payPrice?: number // 子订单实付金额（总），不算主订单分摊金额，单位：分
  couponPrice?: number // 优惠劵减免金额，单位：分
  pointPrice?: number // 积分抵扣的金额
  usePoint?: number // 使用的积分
  givePoint?: number // 赠送的积分
}

/** 回收订单主信息 */
export interface Order {
  no?: string // 订单流水号
  type?: number // 订单类型
  terminal?: number // 订单来源终端
  userId?: number // 用户编号
  userIp?: string // 用户 IP
  userRemark: string // 用户备注
  status?: number // 订单状态
  productCount?: number // 回收的商品数量
  cancelType: number // 取消类型
  remark: string // 商家备注
  commentStatus?: boolean // 是否评价
  brokerageUserId: number // 推广人编号
  payOrderId: number // 支付订单编号
  payStatus?: boolean // 是否已支付：[0:未支付 1:已经支付过]
  payTime: string | Dayjs // 订单支付时间
  payChannelCode: string // 支付成功的支付渠道
  finishTime: string | Dayjs // 订单完成时间
  cancelTime: string | Dayjs // 订单取消时间
  totalPrice?: number // 商品原价（总），单位：分
  discountPrice?: number // 订单优惠（总），单位：分
  deliveryPrice?: number // 运费金额，单位：分
  adjustPrice?: number // 订单调价（总），单位：分
  payPrice?: number // 应付金额（总），单位：分
  refundStatus?: number // 售后状态
  refundPrice?: number // 退款金额，单位：分
  couponId: number // 优惠劵编号
  couponPrice?: number // 优惠劵减免金额，单位：分
  usePoint?: number // 使用的积分
}

// 回收订单主 API
export const OrderApi = {
  // 获得回收订单主分页
  getOrderPage: async (params: any) => {
    return await request.get({ url: `/recycle/order/page`, params })
  },

  // 查询交易订单详情
  getOrder: async (id: number) => {
    return await request.get({ url: `/recycle/order/get-detail`, id })
  },

  // 获得交易订单统计
  orderSummary: async (params: any) => {
    return await request.get({ url: `/recycle/order/summary`, params })
  },

  // 订单备注
  updateRemark: async (data: Order) => {
    return await request.put({ url: `/recycle/order/update-remark`, data })
  },

  //订单调价
  updatePrice: async (data: Order) => {
    return await request.put({ url: `/recycle/order/update-price`, data })
  }
}
